package com.hooya.fa.eu.biz.service;

import com.hooya.fa.eu.api.bo.LastCostBO;
import com.hooya.fa.eu.api.bo.SellPriceBO;
import com.hooya.fa.eu.api.bo.stk.BuyRecordBO;
import com.hooya.fa.eu.api.bo.stk.ReturnedRecordBO;
import com.hooya.fa.eu.api.bo.stk.SellRecordBO;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Set;

/**
 * @Description eu原始数据
 * @Author : Zongz
 * @Copyright Copyright (c) 豪雅集团
 * @Create 2023/11/28
 * @Version 1.0.0
 */
public interface EuSourceDataService {

    /**
     * 所有历史价格（买卖记录）
     *
     * @return list
     */
    List<LastCostBO> getMmList();

    /**
     * 获取23年波兰价格
     *
     * @return list
     */
    List<SellPriceBO> getPlnPrice();

    /**
     * 获取23年欧洲价格
     *
     * @return list
     */
    List<SellPriceBO> getEurPrice();

    /**
     * 所有历史价格（转运记录）
     *
     * @return list
     */
    List<LastCostBO> getZyList();

    /**
     * 获取fba国家列表
     *
     * @return list
     */
    List<String> getFbaCountryList();

    /**
     * 根据时间获取进仓记录
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return list
     */
    List<BuyRecordBO> getWarehousingListByDate(String startDate, String endDate);

    /**
     * 根据时间获取转运记录
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return list
     */
    List<BuyRecordBO> getZyListByDate(String startDate, String endDate);

    /**
     * 根据时间获取其他转运记录
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return list
     */
    List<BuyRecordBO> getOtherZyListByDate(String startDate, String endDate);

    /**
     * 获取whId，用于优化发货sql
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return list
     */
    List<String> getWhIdByTimeGet(String startDate, String endDate);

    /**
     * 根据销售时间和发货地获取发货信息
     * 有销售记录的发货数据
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @param whIds     原始仓库id
     * @return list
     */
    List<SellRecordBO> getDeliveryGoodsListByDate(String startDate, String endDate, List<String> whIds);

    /**
     * 根据销售时间获取销售信息
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return list
     */
    List<SellRecordBO> getSellRecordListByDate(String startDate, String endDate);

    /**
     * 根据退货时间和订单优化ids获取退货信息
     *
     * @param startDate        开始时间
     * @param endDate          结束时间
     * @param returnedOrderIds 退回订单id
     * @return list
     */
    List<ReturnedRecordBO> getReturnedListByDate(String startDate, String endDate, List<String> returnedOrderIds);

    /**
     * 根据时间和sheetNumber获取其他转运记录(新增方法，不动原流程)
     *
     * @param startDate       开始时间
     * @param endDate         结束时间
     * @param sheetNumberList sheetNumber
     * @return list
     */
    List<BuyRecordBO> getZyListByDateAndSheetNumber(String startDate, String endDate, List<String> sheetNumberList);

    /**
     * 根据销售时间和sheetNumber获取销售信息(新增方法，不动原流程)
     *
     * @param startDate       开始时间
     * @param endDate         结束时间
     * @param sheetNumberList sheetNumber
     * @return list
     */
    List<SellRecordBO> getSellListByDateAndSheetNumber(String startDate, String endDate, List<String> sheetNumberList);

    /**
     * 根据销售时间、发货地和sheetNumber获取发货信息(新增方法，不动原流程)
     *
     * @param startDate       开始时间
     * @param endDate         结束时间
     * @param whIds           原始仓库id
     * @param sheetNumberList sheetNumber
     * @return list
     */
    List<SellRecordBO> getDeliveryGoodsListByDateAndSheetNumber(String startDate, String endDate, List<String> whIds,
                                                                List<String> sheetNumberList);

    /**
     * 根据时间获取需要补单得转运数据（未排除盘亏盘盈）
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return list
     */
    List<BuyRecordBO> getSupplementZyList(String startDate, String endDate);

    /**
     * 根据时间获取销售补单差异数据
     *
     * @param suppStartDate 开始时间
     * @param suppEndDate   结束时间
     * @return list
     */
    List<SellRecordBO> getHisSellRecordListByDate(String suppStartDate, String suppEndDate);

    /**
     * 根据时间获取发货补单差异数据
     *
     * @param suppStartDate 开始时间
     * @param suppEndDate   结束时间
     * @param whIds         原始仓库id
     * @return list
     */
    List<SellRecordBO> getHisDeliveryGoodsListByDate(String suppStartDate, String suppEndDate, List<String> whIds);

    /**
     * 根据订单获取价格
     *
     * @param orderIdList 订单列表
     * @return list
     */
    List<SellPriceBO> getOtherPrice(Set<String> orderIdList);


	List<SellRecordBO> getlywlIsFbaReturnList(String startDate, String endDate);
}
